/** layui-v2.3.0 MIT License By https://www.layui.com */
layui.define('jquery', function (e) {
  'use strict'
  var o = layui.$,
    a = layui.hint(),
    i = 'layui-tree-enter',
    r = function (e) {
      this.options = e
    },
    t = {
      arrow: ['&#xe623;', '&#xe625;'],
      checkbox: ['&#xe626;', '&#xe627;'],
      radio: ['&#xe62b;', '&#xe62a;'],
      branch: ['&#xe622;', '&#xe624;'],
      leaf: '&#xe621;'
    }
  ;(r.prototype.init = function (e) {
    var o = this
    e.addClass('layui-box layui-tree'),
      o.options.skin && e.addClass('layui-tree-skin-' + o.options.skin),
      o.tree(e),
      o.on(e)
  }),
    (r.prototype.tree = function (e, a) {
      var i = this,
        r = i.options,
        n = a || r.nodes
      layui.each(n, function (a, n) {
        var l = n.children && n.children.length > 0,
          c = o('<ul class="' + (n.spread ? 'layui-show' : '') + '"></ul>'),
          s = o(
            [
              '<li ' + (n.spread ? 'data-spread="' + n.spread + '"' : '') + '>',
              (function () {
                return l
                  ? '<i class="layui-icon layui-tree-spread">' +
                      (n.spread ? t.arrow[1] : t.arrow[0]) +
                      '</i>'
                  : ''
              })(),
              (function () {
                return r.check
                  ? '<i class="layui-icon layui-tree-check">' +
                      ('checkbox' === r.check
                        ? t.checkbox[0]
                        : 'radio' === r.check
                        ? t.radio[0]
                        : '') +
                      '</i>'
                  : ''
              })(),
              (function () {
                return (
                  '<a href="' +
                  (n.href || 'javascript:;') +
                  '" ' +
                  (r.target && n.href ? 'target="' + r.target + '"' : '') +
                  '>' +
                  ('<i class="layui-icon layui-tree-' +
                    (l ? 'branch' : 'leaf') +
                    '">' +
                    (l ? (n.spread ? t.branch[1] : t.branch[0]) : t.leaf) +
                    '</i>') +
                  ('<cite>' + (n.name || '未命名') + '</cite></a>')
                )
              })(),
              '</li>'
            ].join('')
          )
        l && (s.append(c), i.tree(c, n.children)),
          e.append(s),
          'function' == typeof r.click && i.click(s, n),
          i.spread(s, n),
          r.drag && i.drag(s, n)
      })
    }),
    (r.prototype.click = function (e, o) {
      var a = this,
        i = a.options
      e.children('a').on('click', function (e) {
        layui.stope(e), i.click(o)
      })
    }),
    (r.prototype.spread = function (e, o) {
      var a = this,
        i = (a.options, e.children('.layui-tree-spread')),
        r = e.children('ul'),
        n = e.children('a'),
        l = function () {
          e.data('spread')
            ? (e.data('spread', null),
              r.removeClass('layui-show'),
              i.html(t.arrow[0]),
              n.find('.layui-icon').html(t.branch[0]))
            : (e.data('spread', !0),
              r.addClass('layui-show'),
              i.html(t.arrow[1]),
              n.find('.layui-icon').html(t.branch[1]))
        }
      r[0] && (i.on('click', l), n.on('dblclick', l))
    }),
    (r.prototype.on = function (e) {
      var a = this,
        r = a.options,
        t = 'layui-tree-drag'
      e.find('i').on('selectstart', function (e) {
        return !1
      }),
        r.drag &&
          o(document)
            .on('mousemove', function (e) {
              var i = a.move
              if (i.from) {
                var r = (i.to, o('<div class="layui-box ' + t + '"></div>'))
                e.preventDefault(), o('.' + t)[0] || o('body').append(r)
                var n = o('.' + t)[0] ? o('.' + t) : r
                n.addClass('layui-show').html(i.from.elem.children('a').html()),
                  n.css({ left: e.pageX + 10, top: e.pageY + 10 })
              }
            })
            .on('mouseup', function () {
              var e = a.move
              e.from &&
                (e.from.elem.children('a').removeClass(i),
                e.to && e.to.elem.children('a').removeClass(i),
                (a.move = {}),
                o('.' + t).remove())
            })
    }),
    (r.prototype.move = {}),
    (r.prototype.drag = function (e, a) {
      var r = this,
        t = (r.options, e.children('a')),
        n = function () {
          var t = o(this),
            n = r.move
          n.from && ((n.to = { item: a, elem: e }), t.addClass(i))
        }
      t.on('mousedown', function () {
        var o = r.move
        o.from = { item: a, elem: e }
      }),
        t
          .on('mouseenter', n)
          .on('mousemove', n)
          .on('mouseleave', function () {
            var e = o(this),
              a = r.move
            a.from && (delete a.to, e.removeClass(i))
          })
    }),
    e('tree', function (e) {
      var i = new r((e = e || {})),
        t = o(e.elem)
      return t[0]
        ? void i.init(t)
        : a.error('layui.tree 没有找到' + e.elem + '元素')
    })
})
